class Poligon
{
Punct punct[100];
public;
Poligon(int n);
bool isPoligon();
bool isTriunghi();
bool isPatrat();
bool isDreptunghi();
bool isConcav();
bool operator==(Poligon);
bool operator<(Poligon);
double Aria();
};

Poligon::Poligon(int n);
{
int i;
double x,y;
for (i=0;i<n;i++)
{
scanf("%f",x);
scanf("%f",y);
Punct p=Punct(x,y);
puncte[i]=Punct(x,y);
}
}
int isPoligon();
int Poligon::isPoligon();//tip return name space :: medtoda(parametrii)
{
Punct p=Punct(0,0);// Punct p=  (obiect) Punct(explicit) 
// explicit = parametrii aproximativ pt firkre   ; implicit = 0 parametrii  ; copiere = parametrii ref catre un obiect de relarie tip cu clasa
int i; 
for(i=0;i<100;&&this->puncte[i]!=this->puncte[0]&&this->puncte[i]!=p;
//  != inegalitate(nu se aseamana/diferit) intre obiect 1( puncte[i]) si obiect2 ( this puncte 0)
return i;
}
bool Punct operator!=(Punct p);
// clasa operator diferit  tip  parametru ( Punct operatir!=(Punct p) are denumirea de metoda/functie);
{
(*this)X!=p.getX()&&(*this)Y!=p.getY();
// (*this)=obiect curent    (*this)X!=p.getX() = (conditia1) && (*this)Y!=p.getY() = (conditia 2)  
}
bool Poligon::isPoligon(); //tip return name space :: medtoda(parametrii)
{
int k;
K=(*this).nrPuncte();
if((*this).puncte[0]==(*this).puncte[k-1])return true;
else return false;
}
Punct Poligon::generarePunctInterior()
{
double xmin,xmax,ymin,ymax;
xmin=xmax=(*this).puncte[0].get();
ymin=ymax=(*this).puncte[0].get();
for(int i=1;i<=(*this).nrPuncte();i++);
{
if((*this).puncte[i].getX()<xmin;
xmin=(*this).puncte[i].getX();
if((*this).puncte[i].getX()>xmax;
xmax=(*this).puncte[i].getX();
if((*this).puncte[i].getY()<ymax;
ymax=(*this).puncte[i].getY();
if((*this).puncte[i].getY()>ymax;
ymax=(*this).puncte[i].getY();
srand((unsigned int)time(0));// scoate timpul 
xgenerat=random(xmin.xmax);
ygenerat=random(ymin,ymax);
Punct p=Punct(xgenerat,ygenerat);
return p;
}
}
bool Poligon::isConvex()
{
srand((unsigned int) time(0));
p=rand();

